package cn.cj.erp.service.system;

import cn.cj.erp.bo.system.SysMenuBo;
import cn.cj.erp.entity.system.SysMenu;
import cn.cj.erp.service.base.BaseService;

import java.util.List;


/**
 * 菜单管理
 *
 * @author jianchene0
 */
public interface SysMenuService extends BaseService<SysMenu, SysMenuBo> {

    /**
     * 查询菜单树
     * @param params 查询参数
     * @return 菜单树
     */
    List<SysMenuBo> queryTree(SysMenuBo params);

    /**
     * 统计子菜单的数量
     *
     * @param parentId 父ID
     * @return 子菜单的数量
     */
    Integer countByParentId(Long parentId);

    /**
     * 获取当前可用排序号（parentId的所有子节点中的最大排序号+1）
     * @param parentId 父节ID
     * @return 当前可用排序号
     */
    Integer getCurrentUsedOrderNum(Long parentId);

    /**
     * 检查是否含有子菜单
     * @param menuId 菜单ID
     * @return boolean
     */
    boolean existChild(Long menuId);

    /**
     * 检验名称是否存在
     * @param bo bo对象
     * @return true-存在，false-不存在
     */
    boolean existName(SysMenuBo bo);

    /**
     * 检验编码是否存在
     * @param bo bo对象
     * @return true-存在，false-不存在
     */
    boolean existCode(SysMenuBo bo);
}
